package com.miao.shop.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.miao.common.entity.pojo.Product;
import com.miao.common.entity.pojo.ShopOrder;
import com.miao.shop.entity.vo.OrderVO;
import com.miao.shop.entity.vo.ProductVO;
import org.springframework.stereotype.Service;


import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author Poi
 * @date 2021-02-04 11:36
 */
@Service
public interface OrderService extends IService<ShopOrder> {
    /**
     * 分割订单
     * @param id 总订单Id
     * @param orderVO
     * @return List<Order>
     *
     */
    List<ShopOrder> splitOrder (String id, OrderVO orderVO);

    /**
     *查询商品单价
     * @param product 商品id
     * @return
     */
    BigDecimal getPrice(Product product);

    /**
     * 获取商品数量
     * @param productVO
     * @return
     */
    Integer getCount (ProductVO productVO);

    /**
     *计算单个商品总价
     * @param price 单价
     * @param count 数量
     * @return
     */
    BigDecimal getTotalPrice(BigDecimal price,Integer count);

    /**
     * 获取订单总价
     * @param totals
     * @return
     */
    BigDecimal getOrderPrice(BigDecimal totals);


    /**
     * 存订单到Mysql
     * @param order
     * @return、
     */
    int insertOrder(ShopOrder order);

    /**
     * 存订单到Redis
     * @param order
     */
    void orderToRds(ShopOrder order);

    /**
     * 获取订单商品信息
     * @param oId
     * @return ProInfo
     */
    String getProInfo(String oId);



    /**
     * 删除Redis中的订单
     * @param oId 大订单号
     */
    void delFromRds(String oId);

    /**
     * 更新订单状态
     * @param oId 订单Id
     * @return
     */
    int updateClose  (String oId);
    int updateRate (String oId);
    int updateReceive (String oId);
    int updatePay (String oId);
    int updateDeliver (Map deliver);

    /**
     * 获取顾客的订单
     * @param cId 顾客Id
     * @return
     */
    List<ShopOrder> getMyOrder(int cId);
    List<ShopOrder> getMyOrder(int cId,int state);
    List<Object> getUnpay(int cId);
    Object getCurrentUnpay(String key);




}



